#include "tcpserver.hpp"
#include "protocol.hpp"
#include "calculate.hpp"
#include <unistd.h>
#include"daemon.hpp"
int main(int argc, char *argv[])
{

    if (argc != 2)
    {
        std::cerr << "please use: " << argv[0] << " port" << std::endl;
        return 1;
    }

    //consolestrategy;
    //filestrategy ;//这里不能放在daemon前面；否则就是在当前路径建立了个空目录无文件；然后daemon到了根目录使用日志的时候会直接向对应文件写入但是没有故写入错误
    //让服务端的日志打印到指定文件忽略对它重定向处理
    //守护进程化：
      //daemon(0,0);
      //filestrategy ;//在此处：会在根目录 创建log文件到时候就可以正常文件打印日志了
      //Daemon(0,0);
    // 1·顶层 执行业务层：
    unique_ptr<cal> cl = make_unique<cal>();
    // 2·协议层：
    unique_ptr<protocol> pl = make_unique<protocol>([&cl](request st)
                                                    { return cl->excute(st); });
    // 3·服务层：
    unique_ptr<tcpserver> ur = make_unique<tcpserver>(stoi(argv[1]), [&pl](shared_ptr<Socket> &sock, inetaddr ar)
                                                      { pl->getrequest(sock, ar); });
    ur->start();
    return 0;
}